<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*"%>
<%@ page import="java.util.*"  %>
<%@ page import="java.net.*"  %>

<%@ page import="it.univpm.diiga.semanticsearch.servizi.*"  %>
<%@ page import="it.univpm.diiga.semanticsearch.configurazione.*"  %>
<%@ page import="it.univpm.diiga.semanticsearch.gestione.*"  %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.oreilly.servlet.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Admin</title>
</head>
<body>



<%
	//String localPath=Configuration.getLocalPath();
//out.println(localPath+"<br><br>");



//VERIFICA INIZIALE SE E' STATO FATTO UN IMPORT O MENO
	//to get the content type information from JSP Request Header
	String contentType = request.getContentType(); //here we are checking the content type is not equal to Null and as well as the passed data from mulitpart/form-data is greater than or equal to 0

	//request.getParameter("user")==null &&
	if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0) && session.getAttribute("username")!=null) {


		MultipartRequest multi=null;
		String user="",pass="";
		
		try{
		 
	multi=new MultipartRequest(request, application.getRealPath("/")); 
		 
	user=multi.getParameter("user");
	pass=multi.getParameter("pass");
	
		
	String multiname=(String)multi.getFileNames().nextElement();
	String filename=multi.getOriginalFileName(multiname);
	
	GestioneRepository gest = new GestioneRepository();
	gest.import_rep(application.getRealPath("/")+filename);
	
	File f = multi.getFile(multiname);
	f.delete();
		String redirectURL = "admin.jsp?"+
		"&msg=Services imported from "+filename+" succesfully!";
		response.sendRedirect(redirectURL);
    			
    			
		
		/*
	
		}else{
		
		}
	
		*/
		}catch(Exception ex){
		
	
	String redirectURL = "admin.jsp?"+
	"&msg=Server error: "+ex.getMessage()+"&fail=true";
	response.sendRedirect(redirectURL);  
	
//								String redirectURL = "admin.jsp?user="+user+"&pass="+pass+
//								"&msg=Import operation aborted! Select a file first.&fail=true";
//						response.sendRedirect(redirectURL);
		
	  
		}



}else{


	boolean authenticated;
	String user;
	String pass=request.getParameter("pass");
	Boolean show_auth_confirm=Boolean.parseBoolean(request.getParameter("show_auth_confirm"));
	String operation=request.getParameter("operation");
	String message=request.getParameter("msg");
	String fail=request.getParameter("fail");
	String sessione="";

//Controllo della sessione per verificare 
//se l'utente è loggato o meno

if (session.getAttribute("username")!=null){//se l'user è loggato
	
	user=(String)session.getAttribute("username");// il parametro user viene recuperato dai dati di sessione(utente loggato)
	authenticated=true;
	
}else{//se l'utente non è loggato
	
	//fase di verifica delle credenziali di accesso 
	
	user=request.getParameter("user");//non essendo ancora loggato, si presuppone che l'utente abbia avuto accesso a questa pagina
			  //tramite la pagina di login, e che quest'ultima abbia passato come parametro tramite post il valore dell'username
			  //--> se si accede a questa pagina senza loggarsi prima, chiaramente vengono ricevuti come parametri username e pass nulli, quindi il login fallisce
	
	Authentication auth=new Authentication();
	authenticated=auth.checkUserPassword(user,pass);
	
}
	
	if (authenticated && show_auth_confirm==true)
		//out.println("User "+ user +" authenticated.");
		sessione=user;
	else if (!authenticated) //se il login fallisce viene mostrato un messaggio
		out.println("<script type='text/javascript'>alert('Authentication failed for user "+ user +"."+" Try again'); history.back(); </script>");  
	
	
//se la verifica ha avuto esito positivo, viene mostrata la pagina
//amministrativa del repository pubblico, e viene salvato nei dati di sessione il nome utente (che è segnato come loggato)
if (authenticated) {

	session.setAttribute("username",user); //segna l'utente come loggato nei dati di sessione
	
	
	//nel caso venisse passato un messaggio
	//in seguito ad un'operazione, viene mostrato
	if(message!=null&&fail!=null){
		out.println("<script type='text/javascript'>alert('"+message+"') </script>");
		//out.println("<font color=\"#FF3333\">"+message+"</font>"); //se c'è stato un fail colorato di rosso 
	}else if(message!=null){
		out.println("<script type='text/javascript'>alert('"+message+"') </script>");
		//out.println("<font color=\"#33CC33\">"+message+"</font>"); //altrimenti in verde
	}
	
	
	//try{
	
	
	if(operation==null){ //se non ci sono operazioni da compiere
		 //viene letto il repository
	
	
	//qui sono inizializzate le variabili necessarie alla lettura del
	//repository pubblico
	String publicLink; 
	List<Link> resultRepo=new ArrayList<Link>(); 
	int sizeRepo=0;
	String color="FFFFFF";
	int count=0;
	
		
		
	Configuration.findRepoConfiguration();
	
	String file=Configuration.getPublicRepoLink().get(0).getFile();
	publicLink="webapps"+file;

	
	int last_slash=publicLink.lastIndexOf("/");
	String publicRep=publicLink.substring(last_slash+1);

	GestioneRepository gest=new GestioneRepository();	
	//out.println(publicLink);
	ArrayList<Link> serv=gest.readRepository(publicLink);
%>

	<div style="background:  url(img/logo_admin.png)
								   no-repeat;
								   height:200px;
								   width: 570px;
								   margin-top:20px;
								   margin-left:50px;">
		<div style="margin-left:230px">
		<br /><br />
		<b>User Connected: </b><%=user%><br />
		<b>N. of services: </b><%=serv.size()%><br />
		<b>Repository file: </b><%=publicRep%><br />
		<form action="index.jsp" method="post">
			<div style="float:left;margin-top:20px">
				<input type="hidden" name="logout" value="true">
				<input type="submit" value="Logout">
			</div>
		</form>
		</div>
	</div>
	</br>


<form action="admin.jsp" method="post">

	
<div style="margin-left:50px;width:960px;margin-top:20px">
	<div style=" 				color:white;
								font-size:16px;
								background-color:#000066;
								width:960px;
								float: left;">
		<div style="float:left;width:30px;">.</div>						
		<div style="float:left;width:200px;"><b>SERVICE NAME</b></div>
		<div style="float:left;width:200px;"><b>DESCRIPTION</b></div>
		<div style="float:left;width:460px;"><b>SERVICE INFO</b></div>	
	</div>


<%
	for (int i=0;i<serv.size();i++){
		if (count%2==0)
	color="#78A4EB";
		else
	color="#B7CFF9";
		
		count++;
%>
				
	<div id="row<%=count%>" onmouseover="this.style.background='#FCE901'" onmouseout="this.style.background='<%=color%>'" style="font-size:12px;
										background-color: <%=color%>;
										width:960px;
										float: left;">						<!-- singola riga di risultati -->
		<div style="float:left;width:30px;"><input type="checkbox" name="servizio<%=i%>" value="<%=serv.get(i).getServName()%>"></div>		
		<div style="float:left;width:200px;"><%=serv.get(i).getServName()%></div>
		<div style="float:left;width:200px;"><%=serv.get(i).getServDescr()%></div>
		<div style="float:left;width:460px;">	Link to service: <a href="<%=serv.get(i).getServLink()%>" target="_blank"> <%=serv.get(i).getServLink()%>  </a><br />
												WSDL: <a href="<%=serv.get(i).getWsdlLink()%>" target="_blank"> <%=serv.get(i).getWsdlLink()%>  </a><br />
												BPEL: <a href="<%=serv.get(i).getBpellLink()%>" target="_blank"> <%=serv.get(i).getBpellLink()%> </a><br />
												SWSAL: <a href="<%=serv.get(i).getWsdlLink()%>" target="_blank"> <%=serv.get(i).getSwsalLink()%> </a><br/>
												<!--  DESCRIPTION: 
												<%String descr="";
												if(serv.get(i).getServDescr()!=null){
													descr=" "+serv.get(i).getServDescr();
												}%>
												
												  META-TAG:
												<%String metatag="";
												   if(serv.get(i).getServMeta().size()>0){
														 for(int j=0;j<serv.get(i).getServMeta().size();j++){
															 if(j!=0) metatag+=", ";
															 metatag+=serv.get(i).getServMeta().get(j);
														 }
													 }%> -->
												<input type="hidden" name="servLink<%=i%>" value="<%=serv.get(i).getServLink()%>">
												<input type="hidden" name="wsdl<%=i%>" value="<%=serv.get(i).getWsdlLink()%>">
												<input type="hidden" name="bpel<%=i%>" value="<%=serv.get(i).getBpellLink()%>">
												<input type="hidden" name="swsal<%=i%>" value="<%=serv.get(i).getSwsalLink()%>">
												<input type="hidden" name="servRepo<%=i%>" value="<%=serv.get(i).getServRepo()%>">
												<input type="hidden" name="servdescr<%=i%>" value="<%=serv.get(i).getServDescr()%>">
												<input type="hidden" name="servmeta<%=i%>" value="<%=metatag%>">
												</div>	
	</div> 
<%
 	}
 %> 

<!-- <input type="hidden" name="user" value="<%=user%>">
<input type="hidden" name="pass" value="<%=pass%>">
-->


	<div style="float:left;margin-top:20px">
		<input type="submit" name="operation" value="Add">
	</div>

	<div style="float:left;margin-top:20px">
		<input type="submit" name="operation" value="Modify">
	</div>
	
	<div style="float:left;margin-top:20px">
		<input type="submit" name="operation" value="Delete">
	</div>
	
	<div style="float:left;margin-top:20px">
		<input type="submit" name="operation" value="Import">
	</div>
</div>
</form>




<%
	} 
	
	else if (operation.equalsIgnoreCase("Add")){//maschera di aggiunta di un nuovo servizio

//di seguito viene cercato l'indice più basso tra gli elementi spuntati
//che verrà utilizzato in caso di inserimento
		Enumeration paramList = request.getParameterNames();
		int index=-1;

		while (paramList.hasMoreElements()){
	String param = (String)paramList.nextElement();

		if (param.startsWith("servizio",0))
		{
	if (index<0 || index>Integer.parseInt(param.substring(8))){
		index=Integer.parseInt(param.substring(8));
	}
		}
		
		}
%>

<div align="center">
		<div style="margin-top:50px;
								width:450px;
								height:340px;
								font-size:19px;
								LINE-HEIGHT: 22px;
								background:  url(img/add.png)
								no-repeat;"><br /><br />
		<%
			if (index!=-1) out.println("<b>ADD/INSERT NEW SERVICE</b>");
				else out.println("<b>ADD NEW SERVICE</b>");
		%>
		
			<form name="add" action="admin.jsp" method="post"><br/>
			
			<input type="hidden" name="operation" value="execAdd">
			<input type="hidden" name="index" value="<%=index%>">
			
			
			
		<div align="left" style="margin-top:0px;margin-left:70px;" >
			<div style="float:left;">	
				<label> Service Name: </label><br />
				<label> Wsdl Link: </label><br />
				<label> Swsal Link: </label><br />
				<label> Bpel Link: </label><br />
				<label> Service Link: </label><br />
				<label> Service Repository: </label><br />
				<label> Description: </label><br />
				<label> Meta-tag:</label><br /> 
				<label style="font-size:12px;">(separated by comma)</label><br />
			</div>
			<div style="float:left;">
				<input type="text" name="servname"><br />
				<input type="text" name="wsdl"><br />
				<input type="text" name="swsal"><br />
				<input type="text" name="bpel"><br />
				<input type="text" name="servlink"><br />
				<input type="text" name="servrepo"><br />
				<input type="text" name="servdescr"><br />
				<input type="text" name="servmeta"><br />
			</div>
		</div>	
		


	

	<div style="margin-top:200px;width:320px;">
		<input type="submit" name="add_type" value="Add"></input>
		<%
			if(index!=-1) //l'inserimento è consentito solo 
					 //se è stato selezionato almeno un servizio prima di cui inserire
			out.println("<input type=\"submit\" name=\"add_type\" value=\"Insert\"></input>");
		%>
	</div>
	</div>
</form>
			
<%
				out.println("<div style='margin-top:30px;width:600px;'>");
					if (index!=-1) 
						{out.println("<script type='text/javascript'>alert('If you choose to Insert, the new service will be placed"+
					" before Service "+(index+1)+" ("+
							request.getParameter("servizio"+index)+")."+
							" If you choose to Add will be appended to the bottom of the repository.')</script>");
						}
					else out.println(" <script type='text/javascript'>alert('The new service will be appended to the bottom of the repository. If you need to Insert this service before another one, you need to select a service first.')</script> ");
					
					out.println("</div>");
					out.println("</div>");
					
				}
						
					
					
					
					
					else if (operation.equalsIgnoreCase("execAdd")){//esecuzione effettiva dell'aggiunta/inserimento
						String add_type=request.getParameter("add_type");
						int index=Integer.parseInt(request.getParameter("index"));
						String servname=request.getParameter("servname");
						String wsdl=request.getParameter("wsdl");
						String swsal=request.getParameter("swsal");
						String bpel=request.getParameter("bpel");
						String servlink=request.getParameter("servlink");
						String servrepo=request.getParameter("servrepo");
						
						
						String servdescr=request.getParameter("servdescr");
						String servmeta=request.getParameter("servmeta");
						
						
						//aggiunge il servizio solo se si è inserito almeno service name o wsdl link
						if(!servname.trim().equals("") || !wsdl.trim().equals("")){
						
					GestioneRepository gest=new GestioneRepository();
					Link newService = new Link(servname,servlink,wsdl,bpel,swsal,servrepo);
					
					
					//settaggio descrizione e meta-tags
					newService.setServDescr(servdescr);
					//rilevamento tags da una stringa nel formato(a, b, c,...)
					String[] tags = servmeta.split(",");
					if (tags.length>0){
						for(int j=0;j<tags.length;j++){
							newService.addServMeta(tags[j].trim());
						}
					}
						
						
						
						gest.addRepository(newService,index); //il nuovo servizio
												//viene aggiunto o inserito in base
												//al valore di index(-1=add, else insert)
					
					
					if(add_type.equalsIgnoreCase("Add")){ //se l'addtype è Add si è scelto di aggiungere in coda al repository
						
						String redirectURL = "admin.jsp?"+
						"&msg=Service "+servname+" succesfully added to the repository!";
						response.sendRedirect(redirectURL);
						
					}
					else if(add_type.equalsIgnoreCase("Insert")){ //se l'addtype è Insert si è scelto di inserire prima del (primo) servizio selezionato
						String redirectURL = "admin.jsp?user="+user+"&pass="+pass+
						"&msg=Service "+servname+" succesfully inserted in position "+(index+1)+"!";
						response.sendRedirect(redirectURL);
					}
						
						}else{ //se non si è inserito almeno uno tra service name e wsdl link
					  //l'operazione di aggiunta/inserimento è annullata
					String redirectURL = "admin.jsp?user="+user+"&pass="+pass+
							"&msg=Add/Insert operation failed! Please insert at least one between Service Name and Wsdl link.&fail=true";
					//redirectURL= URLEncoder.encode(redirectURL, "UTF-8");
					response.sendRedirect(redirectURL);  
					  
						}
					
					}
					
					
					
					else if (operation.equalsIgnoreCase("Modify")){//maschera di modifica di un servizio

						//di seguito viene cercato l'indice più basso tra gli elementi spuntati
						//se il valore indice rimane a -1 significa che non sono stati selezionati
						//elementi
						Enumeration paramList = request.getParameterNames();
						int index=-1;

						while (paramList.hasMoreElements()){
							String param = (String)paramList.nextElement();

						if (param.startsWith("servizio",0))
						{
							if (index<0 || index>Integer.parseInt(param.substring(8))){
								index=Integer.parseInt(param.substring(8));
							}
						}
						
						}

						
						if (index==-1){//se non si è selezionato almeno un servizio
							  //l'operazione di modifica è annullata
							
							String redirectURL = "admin.jsp?user="+user+"&pass="+pass+
									"&msg=Select a service to modify first!&fail=true";
							//redirectURL= URLEncoder.encode(redirectURL, "UTF-8");
							response.sendRedirect(redirectURL);  
						
						}else{//in caso siano stati selezionati uno o più servizi
							//viene mostrata la maschera di modifica del primo selezionato
							
						String servname=request.getParameter("servizio"+index);
						String wsdl=request.getParameter("wsdl"+index);
						String swsal=request.getParameter("swsal"+index);
						String bpel=request.getParameter("bpel"+index);
						String servlink=request.getParameter("servLink"+index);
						String servrepo=request.getParameter("servRepo"+index);
						
						String servdescr=request.getParameter("servdescr"+index);
						String servmeta=request.getParameter("servmeta"+index);
			%>
		
	<div align="center">
		<div style="margin-top:50px;
								width:450px;
								height:340px;
								font-size:19px;
								LINE-HEIGHT: 22px;
								background:  url(img/modify.png)
								no-repeat;"><br /><br />
		
	<%
				out.println("<b>MODIFY SERVICE</b>");
			%>

			<form name="modify" action="admin.jsp" method="post"><br/>
				<input type="hidden" name="operation" value="execModify">
				<input type="hidden" name="index" value="<%=index%>">
				
				<div align="left" style="margin-top:0px;margin-left:70px;" >
					<div style="float:left;">
						<label> Service Name: </label><br />
						<label> Wsdl Link: </label><br />
						<label> Swsal Link: </label><br />
						<label> Bpel Link: </label><br />
						<label> Service Link: </label><br />
						<label> Service Repository: </label><br />
						<label> Description: </label><br />
						<label> Meta-tag: </label><br />
					</div>
					<div style="float:left;">
						<input type="text" name="servname" value="<%=servname%>"><br />
						<input type="text" name="wsdl" value="<%=wsdl%>"><br />
						<input type="text" name="swsal" value="<%=swsal%>"><br />
						<input type="text" name="bpel" value="<%=bpel%>"><br />
						<input type="text" name="servlink" value="<%=servlink%>"><br />
						<input type="text" name="servrepo" value="<%=servrepo%>"><br />					
						<input type="text" name="servdescr" value="<%=servdescr%>"><br />					
						<input type="text" name="servmeta" value="<%=servmeta%>"><br />					
					</div>
				</div>
				
				<div style="margin-top:190px;width:320px;">
					<input type="submit" value="Modify"></input>
				</div>
			</form>
		</div>
	
					
		<%
									out.println("<div style='margin-top:30px;width:600px;'>");
															out.println("<script type='text/javascript'> alert('Modifying Service "+(index+1)+
																		". Attention, the service selected for modify is the first of your selection and if you selected other services, they will not be changed')</script>");
															out.println("</div>");
															out.println("</div>");
															}
																

															}
															

															else if (operation.equalsIgnoreCase("execModify")){//esecuzione effettiva della modifica
																int index=Integer.parseInt(request.getParameter("index"));
																String servname=request.getParameter("servname");
																String wsdl=request.getParameter("wsdl");
																String swsal=request.getParameter("swsal");
																String bpel=request.getParameter("bpel");
																String servlink=request.getParameter("servlink");
																String servrepo=request.getParameter("servrepo");
																
																
																String servdescr=request.getParameter("servdescr");
																String servmeta=request.getParameter("servmeta");
																
																//modifica il servizio solo se si è inserito almeno service name o wsdl link
																if(!servname.trim().equals("") || !wsdl.trim().equals("")){
																
															GestioneRepository gest=new GestioneRepository();
															Link newService = new Link(servname,servlink,wsdl,bpel,swsal,servrepo);
															
															
															//settaggio descrizione e meta-tags
															newService.setServDescr(servdescr);
															//rilevamento tags da una stringa nel formato(a, b, c,...)
															String[] tags = servmeta.split(",");
															if (tags.length>0){
																for(int j=0;j<tags.length;j++){
																	newService.addServMeta(tags[j].trim());
																}
															}
															
															
															
															gest.modRepository(newService,index); //il servizio modificato
																						//viene sostituito al servizio
																						//presente nella posizione index
															
															
																String redirectURL = "admin.jsp?"+
																"&msg=Service "+servname+" succesfully modified!";
																response.sendRedirect(redirectURL);
																
																}else{ //se non si è inserito almeno uno tra service name e wsdl link
															  //l'operazione di modifica è annullata
															String redirectURL = "admin.jsp?user="+user+"&pass="+pass+
																	"&msg=Modify operation on Service "+(index+1)+" failed! Please insert at least one between Service Name and Wsdl link.&fail=true";
															response.sendRedirect(redirectURL);  
															  
																}
															
															}

															
															
															else if (operation.equalsIgnoreCase("Delete")){//maschera di cancellazione
																
																//di seguito viene cercato l'indice più basso tra gli elementi spuntati
																//se il valore indice rimane a -1 significa che non sono stati selezionati
																//elementi.
																Enumeration paramList = request.getParameterNames();
																int index=-1;
																int count=0;
																
																while (paramList.hasMoreElements()){
																	String param = (String)paramList.nextElement();

																if (param.startsWith("servizio",0))
																{
																	if (index<0 || index>Integer.parseInt(param.substring(8))){
																		index=Integer.parseInt(param.substring(8));
																	}
																	count++;//conta il numero di servizi selezionati
																}
																
																}

																
																if (index==-1){//se non si è selezionato almeno un servizio
																	  //l'operazione di cancellazione è annullata
																	
																	String redirectURL = "admin.jsp?user="+user+"&pass="+pass+
																			"&msg=Select one or more service to delete first!&fail=true";
																	response.sendRedirect(redirectURL);  
																
																}else{//in caso siano stati selezionati uno o più servizi
																	//viene mostrata la maschera di cancellazione
								%>
		<div align="center" >
			<div align="center" style="	margin-top:50px;
									width:382px;
									height:442px;
									font-size:19px;
									background:  url(img/del.png)
									no-repeat;">
				<%
					out.println("<br /><br /><b>Delete Services</b>");
								out.println("<br><br>Sure to delete the following "+count+" services?");
				%>

				<form name="delete" action="admin.jsp" method="post"><br/>
				
				<input type="hidden" name="operation" value="execDelete">
				
						
				
				
				
				<%
																											String servname;
																												List list = Collections.list(request.getParameterNames());
																												Collections.sort(list); //riordina l'enumeratore dei parametri in una lista
																												out.println("<div align='left' style='margin-top:10px;width:382px;height:200px;'>"  );
																												for(int i=0;i<list.size();i++){
																														String param = (String)list.get(i);
																											
																													if (param.startsWith("servizio",0)) //per ogni servizio selezionato, ne visualizza le info
																													{
																														index=Integer.parseInt(param.substring(8)); //legge l'indice del serv corrente
																														servname=request.getParameter(param);
																										%>
				
					<label>&nbsp;&nbsp;&nbsp;&nbsp;  Service <%=(index+1)%>: <%=servname%> <br /> </label>
					<input type="hidden" name="<%=param%>" value="<%=1%>">
				
									
						<%
																				}
																						
																						}
																			%>
				</div>
			
				
				<div style="margin-top:40px;margin-bottom:40px;width:382px;height:40px;">
					<input type="submit" name="confirm" value="Yes"></input>
					<input type="submit" name="confirm" value="No"></input>
				</div>
			</div>
		</div>
		</form>
					
		<%
								}
									
									
									
								}
								
								
								else if (operation.equalsIgnoreCase("execDelete")){//esecuzione effettiva della cancellazione
									
									String confirm=request.getParameter("confirm");
									
									//cancella i servizi solo se si è scelto Yes
									if(confirm.equalsIgnoreCase("Yes")){
									
									
								
								//COSTRUZIONE ARRAY DEGLI INDICI DEI SERVIZI DA CANCELLARE
								ArrayList<Integer> indexList = new ArrayList<Integer>();
								List list = Collections.list(request.getParameterNames());
								Collections.sort(list); //riordina l'enumeratore dei parametri in una lista
														//(necessario per la funzione delete che richiede
														//l'elenco in ordine crescente degli indici da eliminare)
								int index=0;
								int count=0;
								
								for(int i=0;i<list.size();i++){
									String param = (String)list.get(i);

								if (param.startsWith("servizio",0))
								{
										index=Integer.parseInt(param.substring(8));
										
										indexList.add(index);
										count++;
									}
								}
								
								
								GestioneRepository gest=new GestioneRepository();
								gest.delRepository(indexList);//cancella tutti i servizi
															//selezionati
								
								
								
									String redirectURL = "admin.jsp?"+
									"&msg="+count+" services succesfully deleted!";
									response.sendRedirect(redirectURL);
								
								}
								else{ //se si è scelto no dalla maschera
								  //l'operazione di cancellazione è annullata
								String redirectURL = "admin.jsp?"+
										"&msg=Delete operation aborted!";
								response.sendRedirect(redirectURL);  
								  
									}
								
								}
								
								
								else if (operation.equalsIgnoreCase("Import")){//maschera per l'importazione di repository esterni
							%>
		
		
		<div align="center">
		<div style="margin-top:50px;
								width:450px;
								height:340px;
								font-size:16px;
								background:  url(img/add.png)
								no-repeat;"><br /><br /><br />
		<%
				
				out.println("<div style='width:450px;height:20px;font-size:19px;'><b>Import Services</b></div>");
				out.println("<br><br>Select an XML repository file from wich import Services: ");

		%>
		
			<form name="impform" action="admin.jsp" method="post" enctype="multipart/form-data"	><br/>
			
			<input type="hidden" name="operation" value="execImport">
			
			<input type="file" name="xmlrepo" value="">
			
			<input type="submit" value="Import"></input>
		
		</form>
		</div></div>			
		<%
		
	
				}
	
				
//	else if (operation.equalsIgnoreCase("execImport")){
		
	

	//}
/*	catch (Exception e) {
		
		//  e.printStackTrace(new java.io.PrintWriter(out));
		
		  String redirectURL = "admin.jsp?"+
			"&msg=Server error: "+e.getMessage()+"&fail=true";
	response.sendRedirect(redirectURL);  
	}
*/
	

}
  



%>

 

<br />
<br />


<% if (operation!=null) {out.println("</div>");} 


}	



//CODICE PER RECUPERO MANUALE DATI MULTIPART


/*		DataInputStream in = new DataInputStream(request.getInputStream());
//we are taking the length of Content type data
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
//this loop converting the uploaded file into byte code
while (totalBytesRead < formDataLength) {
	byteRead = in.read(dataBytes, totalBytesRead, 
formDataLength);
	totalBytesRead += byteRead;
	}

String file = new String(dataBytes);
//for saving the file name
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\")
+ 1,saveFile.indexOf("\""));
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1,
contentType.length());
int pos;
//extracting the index of file 
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

// creating a new file with the same name and writing the content in new file
   String strDirectory ="tmp";
   (new File(strDirectory)).mkdir();
   if((new File(strDirectory)).exists()){//check if the dir exists
   
	 String tmp_file=strDirectory+saveFile;
		FileOutputStream fileOut = new FileOutputStream(tmp_file);
		fileOut.write(dataBytes, startPos, (endPos - startPos));
		fileOut.flush();
		fileOut.close();
GestioneRepository gest=new GestioneRepository();
gest.import_rep(tmp_file);//importa i servizi dal repository
						//selezionato
File f = new File(tmp_file);


f.delete();

   }else{
	
	   
   }
	   
*/
%>




</body>
</html>

